Shellscript grammer 2

파일 검사(현재 디렉토리에)
-e 파일명        #파일 존재하면 참
-d 파일명        #파일이 디렉토리면 참
-h 파일명        #심볼릭 링크파일이면 참(소프트 링크)
-f 파일명        #파일이 일반 파일이면 참
-r 파일명        #파일이 읽기 가능이면 참
-s 파일명        #파일 크기가 0이 아니면 참
-u 파일명        #파일이 set-user-id 설정이면 참
-w 파일명        #파일이 쓰기 가능 상태이면 참
-x 파일명        #파일이 실행 가능 상태이면 참
if3.s
#!/bin/bash
if [ -e $1 ]
then
echo "file exist"
exit
fi
echo "file not exist"
논리 연산
조건1 -a 조건2        # AND
조건1 -o 조건2        # OR
조건1 && 조건2        # 양쪽 다 성립(AND)
조건1 || 조건2        # 한쪽 또는 양쪽다 성립(OR)
!조건        #조건이 성립하지 않음
true        #조건이 언제나 성립
false        #조건이 언제나 성립하지 않음
조건문 if/else
if [ ]
then
else
fi
ifelse.sh
#!/bin/bash
if [ $1 -eq $2 ]
then
echo "Same Value"
else
echo "Different Value"
fi

celina@ubuntuserver:~/celina/shell$ ./ifelse.sh 1 2

Different Value

명령 해석
ping -c 1 192.168.0.1 1>/dev/null
    0: 표준 입력, 1: 표준 출력, 2: 표준 에러
- 1> /dev/null: 표준 출력 내용을 버림(출력x)
-c 1 한번만 체크

ping.sh
#!/bin/bash
ping -c 1 192.168.0.1 1>/dev/null
if [ $? -eq 0 ]
then
echo " "
else
echo " "
fi

celina@ubuntuserver:~/celina/shell$ ./ping.sh

게이트웨이 핑 실패

조건문 한줄에 작성하기(참고)
if [ -z $1 ]; then echoInsert arguments; fi
if [ 뒤와 ] 앞에는 공백이 있어야 한다.
[] 에서 &&, ||, <, > 연산자들이 에러가 나는 경우 [[]]를 사용하면 정상작동하는 경우도 있음
반복문(for)
기본 for 구문
for in 1, 2 ...
do
done
for.sh
#!/bin/bash
for database in $(ls)
do
echo $database
done

celina@ubuntuserver:~/celina/shell$ ./for.sh

for.sh

hello.sh

if.sh

ifelse.sh

list.sh

notes.sh

ping.sh

shell.sh

sum.sh

variables.sh

한줄로 아래와 같이 쓸 수 있다.
#!/bin/bash
for database in $(ls); do echo $database; done
반복문(while)
while [ ]
do
done
while.sh
#!/bin/bash
lists=$(ls)
num=${#lists[@]}
index=0
while [ $num -ge 0 ]
do
echo ${lists[$index]}
index=`expr $index + 1`
num=`expr $num - 1`
done

for.sh for2.sh hello.sh if.sh ifelse.sh list.sh notes.sh ping.sh shell.sh sum.sh variables.sh while.sh

변수 타입 지정(Variable Revisited)
Bash 변수는 타입을 구분하지 않고 기본적으로 문자열이다.
문맥에 따라서 연산 처리한다.
declare, typeset을 이용해서 타입 지정할 수 있다.(두개는 동일)
#
# readonly string_variable="hello world"
declare -r string_variable
#
# number_variable=10
declare -i number_variable=10
#
# array_variable=()
declare -a array_variable
#
# export export_variable="hello world"
declare -x export_variable="hello world"
#
declare -f
#
declare -f